ROLL 配置系统详解
ROLL 框架采用了一套结构化的配置系统,通过 YAML 文件定义实验参数。本文档将详细介绍 ROLL 的配置设计,帮助新用户理解框架的配置结构和扩展方式。
配置系统架构
ROLL 的配置系统主要由以下几个核心组件构成:
1. BaseConfig - 基础配置类
BaseConfig 是所有配置的基类,定义了实验的基本参数,如:
- 实验名称 (
exp_name) - 随机种子 (
seed) - 输出目录 (
output_dir) - 日志目录 (
logging_dir) - 跟踪器配置 (
track_with,tracker_kwargs) - 训练步数控制 (
max_steps,save_steps,logging_steps,eval_steps) - 批处理大小 (
rollout_batch_size,val_batch_size) - 序列长度设置 (
prompt_length,response_length,sequence_length)
2. WorkerConfig - 工作节点配置类
WorkerConfig 定义了每个工作节点(如训练/推理角色)的配置,包括:
- 模型参数 (
model_args) - 训练参数 (
training_args) - 数据参数 (
data_args) - 生成参数 (
generating_args) - 策略参数 (
strategy_args) - 设备映射 (
device_mapping) - 工作节点数量 (
world_size)
3. PipelineConfig - 流水线配置类
在 RLVR 场景中,RLVRConfig 继承自 BaseConfig,作为具体的任务的配置类(其他PipelineConfig包括AgenticConfig、DPOConfig、DistillConfig)。它包含了:
- 角色配置(
actor_train,actor_infer,reference,critic,rewards等) - RL 算法相关参数(
ppo_epochs,adv_estimator,reward_clip等) - 数据处理参数(
max_len_mask,difficulty_mask等)
4. Strategy - 策略配置
策略配置定义了每个工作节点使用的训练/推理策略,包括:
- 策略名称(如
megatron_train,vllm,sglang,deepspeed_train等) - 策略特定参数(如张量并行大小、流水线并行大小等)
5. Arguments 类
ROLL 使用多个参数类来组织配置:
ModelArguments:模型相关参数TrainingArguments:训练相关参数GeneratingArguments:生成相关参数DataArguments:数据相关参数
配置类 UML 图
为了更直观地理解 ROLL的配置系统,以RLVRConfig的UML类图展示:
- BaseConfig提供了最基础的配置key,具体应用的PipelineConfig继承自 BaseConfig
- PipelineConfig中可根据应用需要定义多个WorkerConfig.worker_config之间独立,可自由分配独立的资源,训练/推理后端
- WorkerConfig中按需要定义该角色持有的ModelArguments、TrainingArguments、GeneratingArguments、DataArguments, 后端StrategyArguments
- WorkerConfig可以按需扩展,构造新的应用配置

YAML 配置与 PipelineConfig 的映射关系
在 ROLL 中,YAML 配置文件与 Python 配置类之间存在直接的映射关系:
- YAML 文件的顶层字段对应
PipelineConfig->BaseConfig的属性 - 角色配置(如
actor_train,actor_infer)对应WorkerConfig实例,对应PipelineConfig中的属性类的配置 - 每个角色下的子字段(如
model_args,training_args)对应相应的参数类实例
例如,在 YAML 文件中:
actor_train:
model_args:
disable_gradient_checkpointing: false
dtype: bf16
training_args:
learning_rate: 1.0e-6
per_device_train_batch_size: 1
映射到 Python 代码中:
config.actor_train.model_args.disable_gradient_checkpointing = False
config.actor_train.model_args.dtype = "bf16"
config.actor_train.training_args.learning_rate = 1.0e-6
config.actor_train.training_args.per_device_train_batch_size = 1
配置验证机制
ROLL 的配置系统具有严格的验证机制:
- YAML 中的配置项必须在对应的 Config 类中有明确定义才能使用
- 通过数据类的类型注解和元数据实现配置项的验证
- 在
__post_init__方法中进行额外的逻辑验证
这种设计防止了配置项混乱,确保了配置的一致性和正确性。
全局环境变量/各角色Worker环境变量 设置入口
在 ROLL 框架中,环境变量的设置分为两个层级:
- 全局环境变量:在
pipeline_config上配置system_envs,对整个流水线中的所有角色生效。 - 各角色Worker环境变量:在
worker_config里的system_envs中配置,仅在该 Worker 的 Ray Actor 创建时生效。